iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0

在前幾天介紹過Notion API後,接著本篇會繼續介紹google calendar API。和Notion API相同,Google Calendar API是符合REST樣式的API。這邊先補充一下REST的相關資料:

REST

維基百科:表現層狀態轉換(英語:Representational State Transfer,縮寫:REST)是Roy Thomas Fielding博士於2000年在他的博士論文中提出來的一種全球資訊網軟體架構風格,目的是便於不同軟體/程式在網路(例如網際網路)中互相傳遞資訊。表現層狀態轉換是根基於超文字傳輸協定(HTTP)之上而確定的一組約束和屬性,是一種設計提供全球資訊網絡服務的軟體構建風格。符合或相容於這種架構風格(簡稱為 REST 或 RESTful)的網路服務,允許使用者端發出以統一資源標識符存取和操作網路資源的請求,而與預先定義好的無狀態操作集一致化。因此表現層狀態轉換提供了在網際網路的計算系統之間,彼此資源可互動使用的協作性質(interoperability)。相對於其它種類的網路服務,例如SOAP服務,則是以本身所定義的操作集,來存取網路上的資源。

簡單來說,以REST設計的網路服務在近年較為流行,主要原因為以REST設計的網路服務有使用方便、程式碼更為簡潔的特性,近年來被廣泛地使用。此外REST是一種設計風格,並沒有統一標準,只需符合Uniform Interface、Stateless、Cacheable、Client-Server、Layered System、Code on Demand這些條件,即可稱為符合REST樣式的API。因此Notion API和Google Calendar API再互相銜接與應用上都有較好的相性。

Google Calendar API

再來,我們切入本篇的主題,在參閱Google 的相關技術文件後,整理出以下Google Calendar API 的常用的項目清單:

  • Events
  • Calendars
  • CalendarList
  • Settings
  • Acl

因應主要會應用到的API功能,本篇會優先介紹calendars以及CalendarList這兩個API。

Calendars

Calendars代表所有現有的日曆項目,並包含了這些項目的後設資料(Matadata)。這個API可用來建立和刪除日曆,也可以用來擷取或設定與其他使用者共用的全域屬性(global properties),如位置(location)、預設時區(timeZone)等等項目。以下為Calendars的格式:

{
  "kind": "calendar#calendar",
  "etag":etag,
  "id":string,
  "summary":string,
  "description":string,
  "location":string,
  "timeZone":string,
  "conferenceProperties": {
    "allowedConferenceSolutionTypes": [
string
    ]
  }
}

Calendarlist

CalendarList 是使用者加入清單的所有日曆項目的集合。使用者可以透過這個API在使用者清單中編輯日曆,並可以做一些個人化的設定,如標注顏色、預設提醒等等。以下為Calendarslist的格式:

{
  "kind": "calendar#calendarListEntry",
  "etag":etag,
  "id":string,
  "summary":string,
  "description":string,
  "location":string,
  "timeZone":string,
  "summaryOverride":string,
  "colorId":string,
  "backgroundColor":string,
  "foregroundColor":string,
  "hidden":boolean,
  "selected":boolean,
  "accessRole":string,
  "defaultReminders": [
    {
      "method":string,
      "minutes":integer
    }
  ],
  "notificationSettings": {
    "notifications": [
      {
        "type":string,
        "method":string
      }
    ]
  },
  "primary":boolean,
  "deleted":boolean,
  "conferenceProperties": {
    "allowedConferenceSolutionTypes": [
string
    ]
  }
}

以上兩個API雖然名稱相似,但功能上是有差異的,比如他們都有新增(insert),刪除(delete)的功能,但作動的效果是不一樣的!明天會繼續研究並消化,再努力呈現內容給大家!

Reference


上一篇
Day 13 Notion First Integration Project in Go vol.4
下一篇
Day 15 初探 Google Calendar API vol.2
系列文
行事曆不再NG:Notion API&Google Calendar跨平台整合發想30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言